--- title: Como usar o pacote sidraR author: '' date: '2022-01-21' slug: como-usar-o-pacote-sidrar categories: [] tags: [] subtitle: '' summary: '' authors: [] lastmod: '2022-01-19T11:21:04-03:00' featured: no image: caption: '' focal_point: '' preview_only: no projects: [] ---
O pacote sidraR permite acessar os dados do Sidra - Sistema IBGE de Recuperação Automática diretamente pelo R. No exemplo de hoje, vamos fazer um levantamento para tentar responder a seguinte pergunta: Quais foram os municípios brasileiros responsáveis pela maior parte do valor de soja produzido nas regiões Norte e Centro-Oeste em 2020?
Como o pacote está no CRAN, a instalação será pelo comando:
install.packages('sidrar')
A função abaixo permite que busquemos por determinadas palavras-chave nos títulos das tabelas do IBGE. Importante: não é permitido usar acentos nessa função.
x <- search_sidra('lavouras temporarias quantidade produzida')
x
## [1] "Tabela 495 - Quantidade produzida por produtos das lavouras temporárias e condição do produtor em relação às terras"
## [2] "Tabela 496 - Quantidade produzida por produtos das lavouras temporárias e grupo de atividade econômica"
## [3] "Tabela 497 - Quantidade produzida por produtos das lavouras temporárias e grupos de área total"
## [4] "Tabela 1272 - Produtos da lavoura temporária nos estabelecimentos agropecuários, segundo indicadores da agricultura familiar e não familiar - FAO"
## [5] "Tabela 1612 - Área plantada, área colhida, quantidade produzida, rendimento médio e valor da produção das lavouras temporárias"
## [6] "Tabela 1731 - Quantidade produzida por produtos das lavouras temporárias - série histórica (1940/2006)"
## [7] "Tabela 5457 - Área plantada ou destinada à colheita, área colhida, quantidade produzida, rendimento médio e valor da produção das lavouras temporárias e permanentes"
## [8] "Tabela 6957 - Produção, Valor da produção, Venda, Valor da venda e Área colhida da lavoura temporária nos estabelecimentos agropecuários, por tipologia, produtos da lavoura temporária, condição do produtor em relação às terras e grupos de atividade econômica"
## [9] "Tabela 6958 - Produção, Valor da produção, Venda, Valor da venda e Área colhida da lavoura temporária nos estabelecimentos agropecuários, por tipologia, produtos da lavoura temporária, tipo de semente e grupos de área colhida"
## [10] "Tabela 6959 - Produção, Valor da produção, Venda, Valor da venda e Área colhida da lavoura temporária nos estabelecimentos agropecuários, por tipologia, produtos da lavoura temporária e grupos de área total"
## [11] "Tabela 6965 - Número de estabelecimentos agropecuários com lavoura temporária, Área total dos estabelecimentos agropecuários com lavoura temporária, Quantidade produzida nas lavouras temporárias e Área colhida nas lavouras temporárias, por produtos da lavoura temporária, origem da orientação técnica recebida e grupos de área total"
Após uma breve leitura dos nomes das tabelas, percebemos que a informação que precisamos está na Tabela 1612: Área plantada, área colhida, quantidade produzida, rendimento médio e valor da produção das lavouras temporárias.
É por meio da função get_sidra() que conseguimos baixar os dados do IBGE para o R. Por meio dos atributos da função eu consigo determinar o nível de detalhe do dado baixado (microrregião, município, estado etc), filtrar apenas as informações de uma região, e até mesmo selecionar uma variável específica.
Como o objetivo aqui é baixar os dados com o valor da produção, eu seleciono a variável número 215 (valor da produção) por meio do atributo variable. O problema é que ao usar a função get_sidra para baixar os dados da tabela, somos surpreendidos com a mensagem: “Quantidade de valores solicitados X linhas excedeu o limite: 50000”. Ou seja, existe uma limitação de que os dados baixados sejam de apenas 50.000 por requisição. Para contornar essa limitação, a solução foi fazer uma requisição para cada região e ir armazenando os resultados em uma tabela que criativamente foi chamada de “tabela”.
regiao <- c(1,5)
tabela <- data.frame()
for(i in regiao){
x <- get_sidra(x = 1612, # código da tabela no Sidra
geo = 'City', # nível de detalhe espacial da informação
geo.filter = list("Region" = i), #região
variable = 215, # variável de interesse
period = as.character(2020)
)
tabela <- rbind(tabela,x)
}
Podemos ver as primeiras linhas da nova tabela abaixo.
head(tabela)
## Nível Territorial (Código) Nível Territorial Unidade de Medida (Código)
## 2 6 Município 40
## 3 6 Município 40
## 4 6 Município 40
## 5 6 Município 40
## 6 6 Município 40
## 7 6 Município 40
## Unidade de Medida Valor Município (Código) Município
## 2 Mil Reais 40723 1100015 Alta Floresta D'Oeste - RO
## 3 Mil Reais 417 1100015 Alta Floresta D'Oeste - RO
## 4 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 5 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 6 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 7 Mil Reais 20 1100015 Alta Floresta D'Oeste - RO
## Ano (Código) Ano Variável (Código) Variável
## 2 2020 2020 215 Valor da produção
## 3 2020 2020 215 Valor da produção
## 4 2020 2020 215 Valor da produção
## 5 2020 2020 215 Valor da produção
## 6 2020 2020 215 Valor da produção
## 7 2020 2020 215 Valor da produção
## Produto das lavouras temporárias (Código) Produto das lavouras temporárias
## 2 0 Total
## 3 2688 Abacaxi*
## 4 40471 Alfafa fenada
## 5 2689 Algodão herbáceo (em caroço)
## 6 2690 Alho
## 7 2691 Amendoim (em casca)
Agora vamos filtrar a produção de soja, selecionar apenas aquelas variáveis que serão usadas, substituir os valores faltantes por zero, remover os municípios que tem valor igual a zero e classificar os valores.
tabela_class <- tabela %>%
janitor::clean_names() %>%
select(5,6,7,9,13) %>%
replace(is.na(.), 0) %>%
dplyr::filter(produto_das_lavouras_temporarias %in% "Soja (em grão)",
valor > 0) %>%
arrange(desc(valor))
tabela_class <- tabela_class %>%
mutate(class = case_when(
valor <= summary(tabela_class$valor)[2] ~ "Baixo",
valor <= summary(tabela_class$valor)[3] ~ "Médio Baixo",
valor <= summary(tabela_class$valor)[5] ~ "Médio Alto",
valor > summary(tabela_class$valor)[5] ~ "Alto"
),
class = factor(class,
levels = c("Baixo","Médio Baixo","Médio Alto","Alto"))
)
tabela_class$municipio_codigo <- as.double(tabela_class$municipio_codigo)
head(tabela)
## Nível Territorial (Código) Nível Territorial Unidade de Medida (Código)
## 2 6 Município 40
## 3 6 Município 40
## 4 6 Município 40
## 5 6 Município 40
## 6 6 Município 40
## 7 6 Município 40
## Unidade de Medida Valor Município (Código) Município
## 2 Mil Reais 40723 1100015 Alta Floresta D'Oeste - RO
## 3 Mil Reais 417 1100015 Alta Floresta D'Oeste - RO
## 4 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 5 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 6 Mil Reais NA 1100015 Alta Floresta D'Oeste - RO
## 7 Mil Reais 20 1100015 Alta Floresta D'Oeste - RO
## Ano (Código) Ano Variável (Código) Variável
## 2 2020 2020 215 Valor da produção
## 3 2020 2020 215 Valor da produção
## 4 2020 2020 215 Valor da produção
## 5 2020 2020 215 Valor da produção
## 6 2020 2020 215 Valor da produção
## 7 2020 2020 215 Valor da produção
## Produto das lavouras temporárias (Código) Produto das lavouras temporárias
## 2 0 Total
## 3 2688 Abacaxi*
## 4 40471 Alfafa fenada
## 5 2689 Algodão herbáceo (em caroço)
## 6 2690 Alho
## 7 2691 Amendoim (em casca)
O resultado pode ser visto no mapa abaixo:
library(mapview)
library(geobr)
library(RColorBrewer)
mapa_soja <- geobr::read_municipality(showProgress = F) %>%
filter(str_detect(code_state, "^1|^5")) %>%
left_join(tabela_class, by = c('code_muni' = 'municipio_codigo'))
mapview::mapview(mapa_soja, zcol = "class", label = 'name_muni', col.regions = brewer.pal(4, "YlOrRd"))